const joi  = require('joi')

const title = joi.string().required().error(errors=>{
    for (err of errors){
        switch (err.code) {
            case 'string.empty':
                return new joi.ValidationError('文章标题不能为空')
            case 'any.required':
                return new joi.ValidationError('必须提交文章标题')
        }
    }
})

const cate_id = joi.number().integer().min(1).required().error(errors=>{
    for (err of errors){
        switch (err.code) {
            case 'number.base':
                return new joi.ValidationError('所属文章分类cate_id必须为数字')
            case 'number.min':
                return new joi.ValidationError('所属文章分类cate_id必须大于1')
            case 'number.integer':
                return new joi.ValidationError('所属文章分类cate_id必须为整数')
            case 'any.required':
                return new joi.ValidationError('必须提交所属文章分类cate_id')
        }
    }
})


const content = joi.string().required().allow('').error(errors=>{
    for (err of errors){
        switch (err.code) {
            case 'any.required':
                return new joi.ValidationError('必须提交文章内容')
        }
    }
})

const state = joi.string().valid('已发布', '草稿').required().error(errors=>{
    for (err of errors){
        switch (err.code) {
            case 'any.only':
                return new joi.ValidationError('发布状态必须为已发布或草稿')
            case 'any.required':
                return new joi.ValidationError('必须提交发布状态')
        }
    }
})


// const pub_date = joi.date().required().error(errors=>{
//     for (err of errors){
//         switch (err.code) {
//             case 'date.base':
//                 return new joi.ValidationError('发布时间必须是datetime字符串格式')
//             case 'any.required':
//                 return new joi.ValidationError('必须提交发布时间')
//         }
//     }
// })


//定义发布文章的id的验证规则
const id = joi.number().integer().min(1).required().error(errors=>{
    for (err of errors){
        switch (err.code) {
            case 'number.base':
                return new joi.ValidationError('文章id必须为数字')
            case 'number.min':
                return new joi.ValidationError('文章id必须大于1')
            case 'number.integer':
                return new joi.ValidationError('文章id必须为整数')
            case 'any.required':
                return new joi.ValidationError('必须提交文章id')
        }
    }
})




// 验证规则字段--发布文章
exports.add_article_schema = {
    body: {
        title,
        cate_id,
        content,
        state
    }
}

// 验证规则字段--更新文章
exports.update_article_schema = {
    body: {
        id,
        title,
        cate_id,
        content,
        state
    }
}

// 验证规则字段--获取文章
exports.get_article_schema = {
    query: {
        id
    }
}

// 验证规则字段--删除文章
exports.delete_article_schema = {
    query: {
        id
    }
}